
#include <GL/glut.h>

void
Desenha(void)
{
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glClear(GL_COLOR_BUFFER_BIT);

	glBegin(GL_QUADS);
		// Especifica que a cor corrente � vermelha
		glColor3f(1.0f, 0.0f, 0.0f); // R, G, B
		glVertex2i(20, 180);
		glVertex2i(20, 20);
		// Especifica que a cor corrente � azul
		glColor3f(0.0f, 0.0f, 1.0f);
		glVertex2i(180, 20);
		glVertex2i(180, 180);
	glEnd();

	glPointSize(5);
	glBegin(GL_POINTS);
		// Especifica que a cor corrente � vermelha
		glColor3f(1.0f, 0.0f, 0.0f); // R, G, B
		glVertex2i(20, 200);
		glVertex2i(20, 360);
		// Especifica que a cor corrente � azul
		glColor3f(0.0f, 0.0f, 1.0f);
		glVertex2i(180, 360);
		glVertex2i(180, 200);
	glEnd();

	glLineWidth(3);
	glBegin(GL_LINE_LOOP);
		// Especifica que a cor corrente � vermelha
		glColor3f(1.0f, 0.0f, 0.0f); // R, G, B
		glVertex2i(20, 380);
		glVertex2i(20, 540);
		// Especifica que a cor corrente � azul
		glColor3f(0.0f, 0.0f, 1.0f);
		glVertex2i(180, 540);
		glVertex2i(180, 380);
	glEnd();

	// Executa os comandos OpenGL
	glFlush();
}

// Inicializa par�metros de rendering
void Inicializa (void)
{
	// Define a cor de fundo da janela de visualiza��o como preta
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}

// Fun��o callback chamada quando o tamanho da janela � alterado
void AlteraTamanhoJanela(GLsizei w, GLsizei h)
{
	// Evita a divisao por zero
	if(h == 0) h = 1;

	// Especifica as dimens�es da Viewport
	glViewport(0, 0, w, h);

	// Inicializa o sistema de coordenadas
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	// Estabelece a janela de selecao (left, right, bottom, top)
	gluOrtho2D (0.0f, 200, 0.0f, 580);
}

// Programa Principal
int
main(int argc, char **argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowSize(200, 580);
	glutInitWindowPosition(100,100);
	glutCreateWindow("Primitivas");
	//glutDisplayFunc(Desenha);
	glutReshapeFunc(AlteraTamanhoJanela);
	Inicializa();
	glutMainLoop();

	return 0;
}
